www.gusucode.com > VC++ 小型会员积分管理系统-源码程序 > VC++ 小型会员积分管理系统-源码程序/code/AcPtsRecorder/AcPtsRecorderView.cpp
//Download by http://www.NewXing.com // AcPtsRecorderView.cpp : CAcPtsRecorderView 类的实现 // #include "stdafx.h" #include "AcPtsRecorder.h" #include <stdlib.h> #include "AcPtsRecorderDoc.h" #include "AcPtsRecorderView.h" #include "DlgLogin.h" #include "DlgAddVIP.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CAcPtsRecorderView IMPLEMENT_DYNCREATE(CAcPtsRecorderView, CFormView) BEGIN_MESSAGE_MAP(CAcPtsRecorderView, CFormView) ON_BN_CLICKED(IDC_BUTTON_FIRSTPAGE, &CAcPtsRecorderView::OnBnClickedButtonFirstpage) ON_BN_CLICKED(IDC_BUTTON_FIRST, &CAcPtsRecorderView::OnBnClickedButtonPre) ON_BN_CLICKED(IDC_BUTTON_SERCH, &CAcPtsRecorderView::OnBnClickedButtonSerch) ON_BN_CLICKED(IDC_BUTTON_LAST, &CAcPtsRecorderView::OnBnClickedButtonLast) ON_BN_CLICKED(IDC_BUTTON_NEXT, &CAcPtsRecorderView::OnBnClickedButtonNext) ON_NOTIFY(NM_CLICK, IDC_LIST_CUSMINFO, &CAcPtsRecorderView::OnNMClickListCusminfo) ON_NOTIFY(NM_DBLCLK, IDC_LIST_CUSMINFO, &CAcPtsRecorderView::OnNMDblclkListCusminfo) ON_BN_CLICKED(IDC_CHECK_DATE, &CAcPtsRecorderView::OnBnClickedCheckDate) ON_COMMAND(ID_VIP_NEW, &CAcPtsRecorderView::OnVipNew) ON_NOTIFY(NM_RCLICK, IDC_LIST_CUSMINFO, &CAcPtsRecorderView::OnNMRclickListCusminfo) ON_COMMAND(ID_UPDATE_DATA, &CAcPtsRecorderView::OnUpdateData) ON_COMMAND(ID_DEL_DATA, &CAcPtsRecorderView::OnDelData) END_MESSAGE_MAP() // CAcPtsRecorderView 构造/析构 CAcPtsRecorderView::CAcPtsRecorderView() : CFormView(CAcPtsRecorderView::IDD) , m_strSerch(_T("")) , m_bSerchWithDate(FALSE) , m_tmStart(COleDateTime::GetCurrentTime()) , m_tmEnd(COleDateTime::GetCurrentTime()) ,m_strWhere("") ,m_nDataPerPage(20) ,m_nDataStart(0) ,m_nDataEnd(0) ,m_nDataCount(0) ,m_nCurPage(1) ,m_nPageCount(0) ,m_bNewSerch(TRUE) { // TODO: 在此处添加构造代码 } CAcPtsRecorderView::~CAcPtsRecorderView() { } void CAcPtsRecorderView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_CUSMINFO, m_ctlListEx); DDX_Text(pDX, IDC_EDIT_STRING, m_strSerch); DDX_Check(pDX, IDC_CHECK_DATE, m_bSerchWithDate); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_START, m_tmStart); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_END, m_tmEnd); } BOOL CAcPtsRecorderView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: 在此处通过修改 // CREATESTRUCT cs 来修改窗口类或样式 return CFormView::PreCreateWindow(cs); } void CAcPtsRecorderView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); m_ctlListEx.InsertColumn(0, _T("编号"), LVCFMT_LEFT, 40); m_ctlListEx.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 100); m_ctlListEx.InsertColumn(2, _T("卡号"), LVCFMT_LEFT, 100); m_ctlListEx.InsertColumn(3, _T("性别"), LVCFMT_LEFT, 40); m_ctlListEx.InsertColumn(4, _T("年龄"), LVCFMT_LEFT, 40); m_ctlListEx.InsertColumn(5, _T("当前积分"), LVCFMT_LEFT, 100); m_ctlListEx.InsertColumn(6, _T("创建时间"), LVCFMT_LEFT, 150); m_ctlListEx.InsertColumn(7, _T("上次更新时间"), LVCFMT_LEFT, 200); DWORD dwStyle = m_ctlListEx.GetStyle(); m_ctlListEx.ModifyStyleEx(0, WS_EX_CLIENTEDGE); dwStyle = m_ctlListEx.GetStyle(); dwStyle = m_ctlListEx.GetExtendedStyle(); m_ctlListEx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP); dwStyle = m_ctlListEx.GetExtendedStyle(); // m_ctlListEx.SetBkColor(RGB(188,194,212)); // m_ctlListEx.SetTextBkColor(RGB(188,194,212)); // // m_ctlListEx.SetBkColor(RGB(224,226,255)); // m_ctlListEx.SetTextBkColor(RGB(224,226,255)); // m_ctlListEx.SetTextColor(RGB(0,255,0)); ((CComboBox*)GetDlgItem(IDC_COMBO_SERCHTYPE))->SetCurSel(1); OnBnClickedButtonFirstpage(); } // CAcPtsRecorderView 诊断 #ifdef _DEBUG void CAcPtsRecorderView::AssertValid() const { CFormView::AssertValid(); } void CAcPtsRecorderView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } CAcPtsRecorderDoc* CAcPtsRecorderView::GetDocument() const // 非调试版本是内联的 { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAcPtsRecorderDoc))); return (CAcPtsRecorderDoc*)m_pDocument; } #endif //_DEBUG // CAcPtsRecorderView 消息处理程序 void CAcPtsRecorderView::OnBnClickedButtonSerch() { UpdateData(); CString strWhere; if (((CComboBox*)GetDlgItem(IDC_COMBO_SERCHTYPE))->GetCurSel() == 0) strWhere.Format("card_id like '%%%s%%'", m_strSerch); else if (((CComboBox*)GetDlgItem(IDC_COMBO_SERCHTYPE))->GetCurSel() == 1) strWhere.Format("customer_name like '%%%s%%'", m_strSerch); m_strWhere = strWhere; m_bNewSerch = TRUE; OnBnClickedButtonFirstpage(); } void CAcPtsRecorderView::OnBnClickedButtonFirstpage() { m_nCurPage = 1; CString strWhere; if (m_strWhere.IsEmpty()) strWhere.Format("1=1 order by customer_id desc"); else strWhere.Format("%s order by customer_id desc", m_strWhere); UpdateListData(strWhere); } void CAcPtsRecorderView::OnBnClickedButtonPre() { m_nCurPage --; CString strWhere; if (m_strWhere.IsEmpty()) strWhere.Format("customer_id <= %d order by customer_id desc", m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); else strWhere.Format("%s and customer_id<=%d order by customer_id desc",m_strWhere, m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); UpdateListData(strWhere); } void CAcPtsRecorderView::OnBnClickedButtonNext() { m_nCurPage ++; CString strWhere; if (m_strWhere.IsEmpty()) strWhere.Format("customer_id <= %d order by customer_id desc", m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); else strWhere.Format("%s and customer_id <= %d order by customer_id desc",m_strWhere, m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); UpdateListData(strWhere); } void CAcPtsRecorderView::OnBnClickedButtonLast() { m_nCurPage = m_nPageCount; CString strWhere; if (m_strWhere.IsEmpty()) strWhere.Format("customer_id >= %d and customer_id <= %d order by customer_id desc", m_nDataEnd, m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); else strWhere.Format("%s and customer_id >= %d and customer_id <= %d order by customer_id desc", m_strWhere, m_nDataEnd, m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); UpdateListData(strWhere); } void CAcPtsRecorderView::OnNMClickListCusminfo(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 *pResult = 0; } void CAcPtsRecorderView::OnNMRclickListCusminfo(NMHDR *pNMHDR, LRESULT *pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; LPNMITEMACTIVATE pNMITEMACTIVATE = (LPNMITEMACTIVATE)pNMHDR; if (pNMITEMACTIVATE->uNewState==0 && pNMITEMACTIVATE->iItem>=0) { m_nCurSel = pNMITEMACTIVATE->iItem; CPoint point = pNMITEMACTIVATE->ptAction; CRect rect; m_ctlListEx.GetClientRect(rect); m_ctlListEx.ClientToScreen(rect); CPoint p = rect.TopLeft(); point = p + point; CMenu menu; menu.LoadMenu(IDR_MENU_POP); CMenu* pPopup = NULL; pPopup = menu.GetSubMenu(0); // pPopup->RemoveMenu(ID_POP_OPEN_REPORT,MF_BYCOMMAND); // pPopup->RemoveMenu(ID_POP_DOWN_REPORT,MF_BYCOMMAND); // pPopup->RemoveMenu(ID_POP_UP_ECGDATA,MF_BYCOMMAND); ASSERT(pPopup != NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this); } *pResult = 0; } void CAcPtsRecorderView::OnNMDblclkListCusminfo(NMHDR *pNMHDR, LRESULT *pResult) { LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 POSITION pos =m_ctlListEx.GetFirstSelectedItemPosition(); if(pos) { CDlgAddVIP dlg; CADORecordset rs; int nIndex = m_ctlListEx.GetNextSelectedItem(pos); int nID = (int)m_ctlListEx.GetItemData(nIndex); CString strSql = ""; strSql.Format("select * from customers where customer_id = %d", nID); if(rs.Open(theApp.m_ADODatabase.GetActiveConnection(), strSql)) { if(!rs.IsEof()) { rs.GetFieldValue("customer_id", dlg.m_nVIPID); rs.GetFieldValue("customer_name", dlg.m_strVIPName); rs.GetFieldValue("card_id", dlg.m_strCardID); rs.GetFieldValue("sex", dlg.m_strVIPSex); rs.GetFieldValue("age", dlg.m_nVIPAge); rs.GetFieldValue("cur_point", dlg.m_nVIPCurPoints); CString strCreatTime; rs.GetFieldValue("creat_time", strCreatTime); dlg.m_tmCreatTime.ParseDateTime(strCreatTime); dlg.m_bIsMod = TRUE; if (dlg.DoModal() == IDOK) { rs.Edit(); rs.SetFieldValue("customer_name", dlg.m_strVIPName); rs.SetFieldValue("card_id", dlg.m_strCardID); rs.SetFieldValue("sex", dlg.m_strVIPSex); rs.SetFieldValue("age", dlg.m_nVIPAge); int npts = dlg.m_nVIPCurPoints + dlg.m_nVIPAddPoints; rs.SetFieldValue("cur_point", npts); CString strNow; strNow.Format("%s", COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")); rs.SetFieldValue("update_time", strNow); rs.Update(); UpdateCustomerData(); } } } } *pResult = 0; } void CAcPtsRecorderView::OnBnClickedCheckDate() { UpdateData(TRUE); if (m_bSerchWithDate) { GetDlgItem(IDC_DATETIMEPICKER_START)->EnableWindow(TRUE); GetDlgItem(IDC_DATETIMEPICKER_END)->EnableWindow(TRUE); } else { GetDlgItem(IDC_DATETIMEPICKER_START)->EnableWindow(FALSE); GetDlgItem(IDC_DATETIMEPICKER_END)->EnableWindow(FALSE); } } void CAcPtsRecorderView::InsertVIP() { CDlgAddVIP dlg; CADORecordset rs; CString strNow; strNow.Format("%s",COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")); CString strSQL = "select * from customers"; dlg.m_bIsMod = FALSE; if (dlg.DoModal() == IDOK) { if(rs.Open(theApp.m_ADODatabase.GetActiveConnection(), strSQL)) { rs.AddNew(); rs.SetFieldValue("customer_name", dlg.m_strVIPName); rs.SetFieldValue("card_id", dlg.m_strCardID); rs.SetFieldValue("sex", dlg.m_strVIPSex); rs.SetFieldValue("age", dlg.m_nVIPAge); rs.SetFieldValue("cur_point", dlg.m_nVIPCurPoints); rs.SetFieldValue("creat_time", strNow); rs.SetFieldValue("update_time", strNow); rs.SetFieldValue("user_name",theApp.m_strCurUser); rs.Update(); } } } void CAcPtsRecorderView::OnVipNew() { InsertVIP(); CString strWhere = ""; UpdateCustomerData(); Invalidate(); } void CAcPtsRecorderView::UpdateListData(CString strWhere) { CADORecordset rs; long nVIPID; CString strVIPCardID; CString strVIPName; CString strCardID; CString strVIPSex; int nVIPAge; int nVIPCurPoints; CString strCreatTime; CString strUpdateTime; CString strCreateUser; //*新的一次查询 重新保存相应需要的值 if (m_bNewSerch) { if (!m_ayPgStartEnd.IsEmpty()) { m_ayPgStartEnd.RemoveAll(); } m_nPageCount = 0; m_nDataCount = 0; CString strSql; strSql.Format("select * from customers where del_flag=0 and %s", strWhere); if(rs.Open(theApp.m_ADODatabase.GetActiveConnection(), strSql)) { Pg_Start_End pg_start_end; if (!rs.IsEof()) { rs.GetFieldValue("customer_id", m_nDataStart); pg_start_end.nStart = m_nDataStart; m_nDataCount ++; m_nPageCount ++; while(!rs.IsEof()) { rs.GetFieldValue("customer_id", m_nDataEnd); if (m_nDataCount++ > (m_nPageCount * m_nDataPerPage)) { m_nPageCount++; pg_start_end.nEnd = m_nDataEnd; m_ayPgStartEnd.Add(pg_start_end); pg_start_end.nStart = m_nDataEnd; } rs.MoveNext(); } pg_start_end.nEnd = m_nDataEnd; m_ayPgStartEnd.Add(pg_start_end); } } m_bNewSerch = FALSE; } CString strQuery; if (strWhere.IsEmpty()) strQuery.Format("select top %d * from customers where del_flag=0", m_nDataPerPage); else strQuery.Format("select top %d * from customers where del_flag=0 and %s", m_nDataPerPage, strWhere); if (m_bSerchWithDate) { CString str; str.Format(" ('%s 00:00:00' < creat_time and creat_time < '%s 23:59:59')",\ m_tmStart.Format("%Y-%m-%d"), m_tmEnd.Format("%Y-%m-%d")); if (strWhere.IsEmpty()) strQuery.Format("select top %d * from customers where del_flag=0 and %s ", m_nDataPerPage, str); else strQuery.Format("select top %d * from customers where del_flag=0 and %s and %s", m_nDataPerPage, str, strWhere); } if(rs.Open(theApp.m_ADODatabase.GetActiveConnection(), strQuery)) { m_ctlListEx.DeleteAllItems(); int nIndex = 0; while(!rs.IsEof()) { rs.GetFieldValue("customer_id", nVIPID); rs.GetFieldValue("customer_name", strVIPName); rs.GetFieldValue("card_id", strCardID); rs.GetFieldValue("sex", strVIPSex); rs.GetFieldValue("age", nVIPAge); rs.GetFieldValue("cur_point", nVIPCurPoints); rs.GetFieldValue("creat_time", strCreatTime); rs.GetFieldValue("update_time", strUpdateTime); rs.SetFieldValue("user_name", strCreateUser); int i = 1; char strTemp[4]; _itoa_s(nIndex + 1, strTemp, sizeof(strTemp), 10); m_ctlListEx.InsertItem(nIndex, strTemp); m_ctlListEx.SetItemText(nIndex, i++, strVIPName); m_ctlListEx.SetItemText(nIndex, i++, strCardID); m_ctlListEx.SetItemText(nIndex, i++, strVIPSex); _itoa_s(nVIPAge, strTemp, sizeof(strTemp), 10); m_ctlListEx.SetItemText(nIndex, i++, strTemp); _itoa_s(nVIPCurPoints, strTemp, sizeof(strTemp), 10); m_ctlListEx.SetItemText(nIndex, i++, strTemp); m_ctlListEx.SetItemText(nIndex, i++, strCreatTime); m_ctlListEx.SetItemText(nIndex, i++, strUpdateTime); m_ctlListEx.SetItemData(nIndex, (DWORD_PTR)nVIPID); nIndex++; // if (nVIPID > m_nFirst) // m_nFirst = nVIPID; // // if (nVIPID < m_nLast) // m_nLast = nVIPID; // if (m_nCurPage == 1) GetDlgItem(IDC_BUTTON_FIRST)->EnableWindow(FALSE); else GetDlgItem(IDC_BUTTON_FIRST)->EnableWindow(TRUE); if (m_nCurPage == m_nPageCount) GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE); else GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE); rs.MoveNext(); } } else AfxMessageBox("更新列表失败!"); } void CAcPtsRecorderView::OnUpdateData() { POSITION pos =m_ctlListEx.GetFirstSelectedItemPosition(); if(pos) { CDlgAddVIP dlg; CADORecordset rs; int nIndex = m_ctlListEx.GetNextSelectedItem(pos); int nID = (int)m_ctlListEx.GetItemData(nIndex); CString strSql = ""; strSql.Format("select * from customers where customer_id = %d", nID); if(rs.Open(theApp.m_ADODatabase.GetActiveConnection(), strSql)) { if(!rs.IsEof()) { rs.GetFieldValue("customer_id", dlg.m_nVIPID); rs.GetFieldValue("customer_name", dlg.m_strVIPName); rs.GetFieldValue("card_id", dlg.m_strCardID); rs.GetFieldValue("sex", dlg.m_strVIPSex); rs.GetFieldValue("age", dlg.m_nVIPAge); rs.GetFieldValue("cur_point", dlg.m_nVIPCurPoints); CString strCreatTime; rs.GetFieldValue("creat_time", strCreatTime); dlg.m_tmCreatTime.ParseDateTime(strCreatTime); dlg.m_bIsMod = TRUE; if (dlg.DoModal() == IDOK) { rs.Edit(); rs.SetFieldValue("customer_name", dlg.m_strVIPName); rs.SetFieldValue("card_id", dlg.m_strCardID); rs.SetFieldValue("sex", dlg.m_strVIPSex); rs.SetFieldValue("age", dlg.m_nVIPAge); int npts = dlg.m_nVIPCurPoints + dlg.m_nVIPAddPoints; rs.SetFieldValue("cur_point", npts); CString strNow; strNow.Format("%s", COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")); rs.SetFieldValue("update_time", strNow); rs.Update(); UpdateCustomerData(); } } } } } void CAcPtsRecorderView::OnDelData() { CADORecordset rs; CString strSQL; strSQL.Format("select * from customers where customer_id = %d", m_ctlListEx.GetItemData(m_nCurSel)); if (AfxMessageBox("确认删除该客户信息?", MB_YESNO) == IDYES) { if(rs.Open(theApp.m_ADODatabase.GetActiveConnection(), strSQL)) { rs.Edit(); rs.SetFieldValue("del_flag", 1); CString strNow; strNow.Format("%s", COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")); rs.SetFieldValue("update_time", strNow); rs.Update(); UpdateCustomerData(); } else AfxMessageBox("删除失败!"); } } void CAcPtsRecorderView::UpdateCustomerData() { CString strWhere; if (m_nCurPage != 1) { if (m_strWhere.IsEmpty()) strWhere.Format("customer_id <= %d order by customer_id desc", m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); else strWhere.Format("%s and customer_id<=%d order by customer_id desc",m_strWhere, m_ayPgStartEnd.GetAt(m_nCurPage - 1).nStart); UpdateListData(strWhere); } else { OnBnClickedButtonFirstpage(); } }